#ifndef _DECISION_H_
#define _DECISION_H_
#include "TypeMap.h"
#include <iostream>

template
<
    template <class ... T> class Rule,
    typename ... Criteria
>
struct Decision
{
    template
    <
        typename SignalSystem
    >
    bool operator()(const SignalSystem& system)
    {
        return rule(system, oldResult, newResult);
    }
    
private:

    Rule<Criteria ... > rule;
    TypeMap<double, Criteria ... > oldResult;
	TypeMap<double, Criteria ... > newResult;
};

	


#endif // _DECISION_H_
